<TagAttribute("shader_model","soso","shdr","????",2,440)>
Public Class SHADER_MODEL_TAG
Inherits HaloTag
Public Const Extension as String = "shader_model"
Public Const FourCC as String = "soso"
Public Const ParentFourCC as String = "shdr"
Public Const GrandParentFourCC as String = "????"
Public Const [Version] as Short = 2
Public Const HeaderLength as Integer = 440

''' <summary>
''' 
''' </summary>
#Region "radiosity properties"

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 19)>
Public flags as Short

''' <summary>
''' affects the density of tesselation (high means slow).
''' </summary>
<TagField("detail level", 1, 17)>
Public detail_level as Short

''' <summary>
''' power of emitted light from 0 to infinity
''' </summary>
<TagField("power", 1, 0)>
Public power as Single

''' <summary>
''' 
''' </summary>
<TagField("color of emitted light", 3, 2)>
Public color_of_emitted_light as Single()

''' <summary>
''' light passing through this surface (if it's transparent) will be tinted this color.
''' </summary>
<TagField("tint color", 3, 2)>
Public tint_color as Single()

''' <summary>
''' 
''' </summary>
#End Region
#Region "physics properties"

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 19)>
Public flags_1 as Short

''' <summary>
''' 
''' </summary>
<TagField("material type", 1, 17)>
Public material_type as Short

''' <summary>
''' 
''' </summary>
<TagField("shader type index", 2, -1)>
Public shader_type_index as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' Setting <true atmospheric fog> enables per-pixel atmospheric fog but disables point/spot lights, planar fog, and the ability to control the atmospheric fog density for this shader.
''' </summary>
#End Region
#Region "model shader"

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 19)>
Public flags_2 as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_2 as Byte()

''' <summary>
''' amount of light that can illuminate the shader from behind
''' </summary>
<TagField("translucency", 1, 0)>
Public translucency as Single

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_3 as Byte()

''' <summary>
''' Change color is used to recolor the diffuse map, it affects pixels based on the BLUE channel of the multipurpose map.
''' </summary>
#End Region
#Region "change color"

''' <summary>
''' 
''' </summary>
<TagField("change color source", 1, 17)>
Public change_color_source as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_4 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 28, -1)>
Public padding_5 as Byte()

    ''' <summary>
    ''' "Self-illumination adds diffuse light to pixels based on the GREEN channel of the multipurpose map. The external self-illumination color referenced by <color source> is modulated by the self-illumination animation."
    ''' </summary>
#End Region
#Region "self-illumination"

    ''' <summary>
    ''' 
    ''' </summary>
    <TagField("flags", 1, 19)>
Public flags_3 as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_6 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("color source", 1, 17)>
Public color_source as Short

''' <summary>
''' 
''' </summary>
<TagField("animation function", 1, 17)>
Public animation_function as Short

''' <summary>
''' 
''' </summary>
<TagField("animation period:seconds", 1, 0)>
Public animation_period as Single

''' <summary>
''' 
''' </summary>
<TagField("animation color lower bound", 3, 2)>
Public animation_color_lower_bound as Single()

''' <summary>
''' 
''' </summary>
<TagField("animation color upper bound", 3, 2)>
Public animation_color_upper_bound as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_7 as Byte()

''' <summary>
''' Base map alpha is used for alpha-testing.
''' 
''' Multipurpose map is used for the following:
''' * RED: specular reflection mask (modulates reflections)
''' * GREEN: self-illumination mask (adds
''' </summary>
#End Region
#Region "maps"

''' <summary>
''' 0 defaults to 1; scales all 2D maps simultaneously
''' </summary>
<TagField("map u-scale", 1, 0)>
Public map_u as Single

''' <summary>
''' 0 defaults to 1; scales all 2D maps simultaneously
''' </summary>
<TagField("map v-scale", 1, 0)>
Public map_v as Single

''' <summary>
''' 
''' </summary>
<TagField("base map", 16, 10)>
Public base_map as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_8 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("multipurpose map", 16, 10)>
Public multipurpose_map as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_9 as Byte()

''' <summary>
''' controls how detail map is applied to diffuse map
''' </summary>
<TagField("detail function", 1, 17)>
Public detail_function as Short

''' <summary>
''' controls how detail map is masked
''' </summary>
<TagField("detail mask", 1, 17)>
Public detail_mask as Short

''' <summary>
''' 0 defaults to 1
''' </summary>
<TagField("detail map scale", 1, 0)>
Public detail_map_scale as Single

''' <summary>
''' 
''' </summary>
<TagField("detail map", 16, 10)>
Public detail_map as New TAG_REFERENCE

''' <summary>
''' 0 defaults to 1 (applied on top of detail map scale above)
''' </summary>
<TagField("detail map v-scale", 1, 0)>
Public detail_map_v as Single

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_10 as Byte()

''' <summary>
''' Scrolls all 2D maps simultaneously.
''' </summary>
#End Region
#Region "texture scrolling animation"

''' <summary>
''' 
''' </summary>
<TagField("u-animation source", 1, 17)>
Public u as Short

''' <summary>
''' 
''' </summary>
<TagField("u-animation function", 1, 17)>
Public u_1 as Short

''' <summary>
''' 0 defaults to 1
''' </summary>
<TagField("u-animation period:seconds", 1, 0)>
Public u_2 as Single

''' <summary>
''' 
''' </summary>
<TagField("u-animation phase", 1, 0)>
Public u_3 as Single

''' <summary>
''' 0 defaults to 1
''' </summary>
<TagField("u-animation scale:repeats", 1, 0)>
Public u_4 as Single

''' <summary>
''' 
''' </summary>
<TagField("v-animation source", 1, 17)>
Public v as Short

''' <summary>
''' 
''' </summary>
<TagField("v-animation function", 1, 17)>
Public v_1 as Short

''' <summary>
''' 0 defaults to 1
''' </summary>
<TagField("v-animation period:seconds", 1, 0)>
Public v_2 as Single

''' <summary>
''' 
''' </summary>
<TagField("v-animation phase", 1, 0)>
Public v_3 as Single

''' <summary>
''' 0 defaults to 1
''' </summary>
<TagField("v-animation scale:repeats", 1, 0)>
Public v_4 as Single

''' <summary>
''' 
''' </summary>
<TagField("rotation-animation source", 1, 17)>
Public rotation as Short

''' <summary>
''' 
''' </summary>
<TagField("rotation-animation function", 1, 17)>
Public rotation_1 as Short

''' <summary>
''' 0 defaults to 1
''' </summary>
<TagField("rotation-animation period:seconds", 1, 0)>
Public rotation_2 as Single

''' <summary>
''' 
''' </summary>
<TagField("rotation-animation phase", 1, 0)>
Public rotation_3 as Single

''' <summary>
''' 0 defaults to 360
''' </summary>
<TagField("rotation-animation scale:degrees", 1, 0)>
Public rotation_4 as Single

''' <summary>
''' 
''' </summary>
<TagField("rotation-animation center", 2, 1)>
Public rotation_5 as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_11 as Byte()

''' <summary>
''' 
''' </summary>
#End Region
#Region "reflection properties"

''' <summary>
''' distance at which the reflection begins to fade out
''' </summary>
<TagField("reflection falloff distance:world units", 1, 0)>
Public reflection_falloff_distance as Single

''' <summary>
''' distance at which the reflection fades out entirely (0 means no cutoff)
''' </summary>
<TagField("reflection cutoff distance:world units", 1, 0)>
Public reflection_cutoff_distance as Single

''' <summary>
''' reflection brightness when viewed perpendicularly
''' </summary>
<TagField("perpendicular brightness:[0,1]", 1, 0)>
Public perpendicular_brightness as Single

''' <summary>
''' reflection tint color when viewed perpendicularly
''' </summary>
<TagField("perpendicular tint color", 3, 2)>
Public perpendicular_tint_color as Single()

''' <summary>
''' reflection brightness when viewed at a glancing angle
''' </summary>
<TagField("parallel brightness:[0,1]", 1, 0)>
Public parallel_brightness as Single

''' <summary>
''' reflection tint color when viewed at a glancing angle
''' </summary>
<TagField("parallel tint color", 3, 2)>
Public parallel_tint_color as Single()

''' <summary>
''' 
''' </summary>
<TagField("reflection cube map", 16, 10)>
Public reflection_cube_map as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_12 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_13 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_14 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding_15 as Byte()
#End Region

End Class
